package com.ym.medical.domain.param;

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;


@Data
@ApiModel(value = "生成微信订单信息")
public class OrderParam {

	/*小程序ID*/
	private String appId;
	@ApiModelProperty("子appid")
	private String subAppId;
	/*商户号*/
	@JsonIgnore
	private String subMchId;
	/*设备号*/
	@ApiModelProperty("设备号(自定义参数，可以为终端设备号(门店号或收银设备ID)，PC网页或公众号内支付可以传'WEB') (必填项)")
	@NotNull(message = "设备号不能为空!", groups = {Add.class})
	private String deviceInfo;
	/*商品描述*/
	@ApiModelProperty("商品描述 (必填项)")
	@NotNull(message = "商品描述不能为空!", groups = {Add.class})
	private String body;
	/*附加数据*/
	@ApiModelProperty("附加数据")
	private String attach;
	/*商户订单号*/
	@ApiModelProperty("订单编号(必填项)")
	@NotNull(message = "订单编号不能为空!", groups = {Add.class})
	private String outTradeNo;
	/*标价金额*/
	@ApiModelProperty("订单金额(paymentPrice)")
	@JsonIgnore
	private String totalFee;
	@ApiModelProperty("返回的url")
	private String callbackUrl;
	@ApiModelProperty("结束时间")
	private String expireTimes;

	@ApiModelProperty("交易类型 (必填项 JSAPI--JSAPI支付（或小程序支付）、NATIVE--Native支付、APP--app支付，MWEB--H5支付)")
	@NotNull(message = "交易类型不能为空!", groups = {Add.class})
	private String tradeType;
	/*商品ID*/
	@ApiModelProperty("订单ID")
	private String productId;
	/*用户标识*/
	private String openId;
	@ApiModelProperty("子用户标识")
	private String subOpenId;

	/*退款相关*/
	/*退款单号*/
	@ApiModelProperty("商户退款单号")
	private String outRefundNo;
	/*退款金额*/
	@ApiModelProperty("退款金额")
	private String refundFee;
	@ApiModelProperty("微信订单号")
	private String transactionId;
	/*微信退款单号*/
	private String refundId;

	// 支付类型 (01-订单 02-送心意 03-充值 04-提现 必传项)
	private String payType;



	/**
	 * 支付密码
	 */
	private String payPwd;

	public interface Add {

	}
}
